The proliferation of connected devices has led to a concurrent proliferation in communications protocols used for transmitting the data. Popular and incompatible protocols include UART, USB 1.1, Ethernet 10 Base-T, SPI/Microwire, and I2C. All of these protocols have advantages and disadvantages that lead to their selection for use by different designers for different applications. Thus, a microcontroller that is designed to be used for communications must be able to receive and transmit data in accordance with at least one of the different protocols. However, to enable the compatibility of a microcontroller with different protocols, traditionally designers used dozens of hardware-implemented blocks designed to address the quirks of each protocol. However, this solution is gate-expensive and prohibits the use of the microcontroller if a protocol is modified, if the microcontroller is used with an existing protocol for which it was not designed, or an entirely new protocol becomes popular. Moreover, if only one or two protocols are used in practice, the inclusion of hardware to address a plurality of protocols is wasteful. Therefore, a universal serializer/deserializer is needed that can be easily adapted to service different now known or later-developed protocols.